package com.cy.pj.arithmetic.controller;

import com.cy.pj.arithmetic.service.ArithmeticService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller     //本质上只是C(Controller)的处理逻辑(本质上是Handler)
public class ArithmeticController {


    /*Controller类内部的异常处理方法*/
//    @ResponseBody           //表示返回的不是页面
//    @ExceptionHandler(ArithmeticException.class)
//    //定义内部的异常处理方法, 括号内为处理异常的范围(算数异常), 上下两个异常类型要一致
//    public String doHandleArithmeticException(ArithmeticException e){
//        return "the exception msg is " + e.getMessage();
//    }

    @Autowired
    private ArithmeticService arithmeticService;

    @ResponseBody
    @GetMapping("/doCompute/{n1}/{n2}")
    public String doCompute(@PathVariable Integer n1, @PathVariable Integer n2){
//        try {
            String s = "The result is " + (n1/n2);      //DispatchServlet对象来处理
            return s;
//        } catch (Exception e) {
//            e.printStackTrace();
//            return "运行中出现异常, 具体异常信息为 : " + e.getMessage();
//        }
        /*try catch 代码为模版代码, 每次都需要自己手动编写, 如果Controller中方法众多,
        * 那么会出现大量的重复代码来处理错误*/

    }

    @ResponseBody
    @GetMapping("/doSum/{nums}")
//    提交多个参数时的方式
    public String doSum(@PathVariable Integer... nums){
        return String.valueOf(arithmeticService.sum(nums));
    }
}
